package com.abel.bigwater.data.sanchuan

import io.netty.buffer.ByteBuf
import org.slf4j.LoggerFactory
import kotlin.experimental.and

class MeterOfflineReply(_dataLen: Int) : SanchuanData(_dataLen) {
    init {
        assert(FIXED_LEN == dataLen)
    }

    /**
     * 计算数据长度，针对解析和打包
     */
    override fun computeDataLen(): Int {
        return FIXED_LEN
    }

    /**
     * 从当前位置写入打包字节流
     */
    override fun fillBuffer(buf: ByteBuf) {
        buf.writeByte(0)
    }

    /**
     * 解析字节流，从buf当前位置开始，并且消费其中的字节。
     */
    override fun <T : SanchuanData> parseBuffer(buf: ByteBuf): T? {
        lgr.info("下线应答: ${(buf.readByte().toShort() and 0xFF).toString(16)}H")
        return this as T
    }

    companion object {
        const val FIXED_LEN = 1

        private val lgr = LoggerFactory.getLogger(MeterOfflineReply::class.java)
    }
}